package com.xiaolin.designmode.visitor;

/**
 * @ClassName Visitor
 * @Description 抽象访问者
 * @Detail 访问者模式的定义：将作用于某种数据结构中的各元素的操作分离出来封装成独立的类，使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作，
 *          为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离，是行为类模式中最复杂的一种模式。
 *              1、步骤：
 *                  1、创建抽象元素
 *                  2、创建抽象访问者
 *                  3、创建若干具体元素
 *                  4、创建若干具体访问者
 *                  5、对象结构角色
 *                  6、测试
 *              2、总结：
 *                  1、角色：
 *                      1、抽象元素
 *                      2、具体元素
 *                      3、抽象访问者
 *                      4、具体访问者
 *                      5、对象结构角色
 *                      6、测试客户端
 *                  2、使用范围：
 *                      在现实生活中，有些集合对象中存在多种不同的元素，且每种元素也存在多种不同的访问者和处理方式。例如，公园中存在多个景点，
 *                      也存在多个游客，不同的游客对同一个景点的评价可能不同；医院医生开的处方单中包含多种药元素，査看它的划价员和药房工作人员对它的处理方式也不同，
 *                      划价员根据处方单上面的药品名和数量进行划价，药房工作人员根据处方单的内容进行抓药。
 * @Author MyPC
 * @Date 2020/11/8
 * @Version 1.0
 */
public interface Visitor {
    void visit(ConcreteElement1 element1);
    void visit(ConcreteElement2 element2);
}
